golang 在宣告變數上,也是我一個很喜歡的地方。 他擁有很多腳本語言(script language)的簡潔,但又擁有強型別的特性,下面就來介紹一些變數的宣告方式
下面是一般的宣告方式,可以用逗號的方式區隔開來:
package main
import (
"fmt"
)
var a,b,c int
var x,y,z bool
func main() {
fmt.Println(a,b,c,x,y,z)
}
也可以用這種一行行的方式宣告:
package main
import (
"fmt"
)
var (
a int
b int
c int
x bool
y bool
z bool
)
func main() {
fmt.Println(a, b, c, x, y, z)
}
也能混合式這樣宣告:
package main
import (
"fmt"
)
var (
a, b, c int
x, y, z bool
)
func main() {
fmt.Println(a, b, c, x, y, z)
}
一樣有幾種初始化的方式,對應上述宣告的方式,第一種如下:
package main
import (
"fmt"
)
var a,b,c int = 1,2,3
var x,y,z bool = true,false,false
func main() {
fmt.Println(a,b,c,x,y,z)
}
再來是最基礎的行式宣告:
package main
import (
"fmt"
)
var (
a int = 1
b int = 1
c int = 1
x bool = true
y bool = true
z bool = true
)
func main() {
fmt.Println(a, b, c, x, y, z)
}
混合式:
package main
import (
"fmt"
)
var (
a, b, c int = 1,2,3
x, y, z bool = true,false,true
)
func main() {
fmt.Println(a, b, c, x, y, z)
}
最後 golang 有提供一種語法糖的宣告方式,可以不用顯示宣告型別,不過只能在func裡面做宣告
package main
import (
"fmt"
)
func main() {
a := 1
b := 1
c := 1
x := true
y := true
z := true
fmt.Println(a, b, c, x, y, z)
}
還有其他的變形如下:
package main
import (
"fmt"
)
func main() {
a, b, c := 1,1,1
x,y,z:=true,true,true
fmt.Println(a,b,c,x,y,z)
}
好像只要有給定初始值,就可以不用宣告型別喔!不需要在 func 內。
:= 是連 var 這個保留字不用一併宣告的樣子,也者能在 func 內使用。
沒錯喔! golang 的確有提供您所說的語法糖,只要有給值,會自動依據給定得值的型別,golang complie 會自動賦予變數型別